 
  

 






<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do;jsessionid=4FCCB481C702D708A7360133D128E359?Id=40 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:27:48 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
<head>
 <title>
  Java Practices -> Private constructor
 </title>
 <link rel="stylesheet" type="text/css" href="../stylesheet8.css" media="all">
 
 <link rel="shortcut icon" href='../images/favicon.ico' type="image/vnd.microsoft.icon">
 <meta name="description" content="Concise presentations of java programming practices, tasks, and conventions, amply illustrated with syntax highlighted code examples.">
 
 <meta name='keywords' content='constructor,design pattern,private,java,java programming,java practices,java idiom,java style,java design patterns,java coding conventions,'>
 
 
</head>
 
<body>


<div class='menu-bar'>
 
  <a href='../home/HomeAction.html' title='Table of Contents'>Home</a> |
  <a href='../vote/VoteSummaryAction-2.html' title='View Poll Results'>Poll</a> |
   
  <A href='../feedback/FeedbackAction451f-2.html?Operation=Show' title='Send Your Feedback'>Wiki</a> |
  <b><a href='../source/SourceAction-2.html' title='Grab Source Code'>Source Code</a></b><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |

  <a href='http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp?From=1' title='Free Download - Java Web Application Framework'><b>WEB4J</b></a> |
  
  <a href='http://www.date4j.net/' title='Replacement for java.util.Date'><b>DATE4J</b></a> |

   <a href='../references/ReferencesAction-2.html' title='References'>Links</a>
   
  <form action='http://www.javapractices.com/search/SearchAction.do' method='get' class='search-form'>
   <input type='text' name='SearchTerms' value="" size=12 maxlength=50 class='search'>
   <input type='submit' value="Search">
  </form>
 
</div>

<P>



  

 






<p class="display-messages">

 

 

</p>


<div class="main-layout">
 
   

 




<div class='page-title'>Private constructor</div>

<div class='main-body'>
 
<br>Private constructors prevent a class from being explicitly instantiated
by callers.
<p>There are some common cases where a private constructor can be useful :
<ul>
<li>
classes containing only static utility methods</li>
<li>
classes containing <a href="TopicAction03b1-2.html">only constants</a></li>
<li>
<a href="TopicAction2161-2.html">type safe enumerations</a></li>
<li>
<a href="TopicAction4934-2.html">singletons</a></li>
</ul>

These examples fall into two categories.

<h4>Object construction is entirely forbidden</h4>
No objects can be constructed, either by the caller or by the native class. 
This is only suitable for classes that offer only <em>static</em> members to the caller.

<P>In these cases, the lack of an accessbile constructor says to the caller : "There are no use cases for 
this class where you need to build an object. You can only use static items. I am preventing you 
from even <em>trying</em> to build an object of this class."
See <a href='TopicAction03b1-2.html'>class for constants</a> for an illustration.

<p>If the programmer does not provide a constructor for a class, then the
system will always provide a default, <em>public</em> no-argument constructor. To disable
this default constructor, simply add a <em>private</em> no-argument constructor to the class.
This private constructor may be empty. Somewhat paradoxically, creation of objects by the caller is in effect
disabled by the addition of this private no-argument constructor.

<h4>Object construction is private only</h4>
Objects can be constructed, but only internally. For some reason, a class needs to prevent the caller 
from creating objects. 

<P>In the case of a <a href='TopicAction4934-2.html'>singleton</a>, the policy is that only one object of that class is supposed to 
exist. Creation of multiple objects of that class is forbidden.

<P>In the case of JDK 1.4 <a href='TopicAction2161-2.html'>type-safe enumerations</a>, more than one object can be created, but again, there 
is a limitation. Only a specific set of objects is permitted, one for each element of the enumeration.
(For JDK 1.5 enums, the creation of such objects is done implicitly by the Java language, not explicitly by the 
application programmer.)
<br>
<br>

</div>




<div class='topic-section'>See Also :</div>
<div class='main-body'>
 
  
  <a href='TopicAction2161-2.html?Id=1'>Type-Safe Enumerations</a> <br>
 
  
  <a href='TopicAction03b1-2.html?Id=2'>Class for constants</a> <br>
 
  
  <a href='TopicAction8d16-2.html?Id=21'>Factory methods</a> <br>
 
  
  <a href='TopicAction4934-2.html?Id=46'>Singleton</a> <br>
 
</div>


<div class='topic-section'>Would you use this technique?</div>
<div class='main-body'>
  
  <form action="http://www.javapractices.com/vote/AddVoteAction.do" method='post'>
    Yes<input type='radio' name='Choice' value='Y' >
    &nbsp;&nbsp;No<input type='radio' name='Choice' value='N'>
    &nbsp;&nbsp;Undecided<input type='radio' name='Choice' value="?" >
    &nbsp;&nbsp;<input type=submit value="Vote" >
    <input type='hidden' name='Operation' value='Apply'>
    <input type='hidden' name='TopicId' value='40'>
  </form>
</div>

<div style='height:10.0em;'></div>

 
 
</div>

  

 





<div align='center' class='legalese'>  
&copy; 2011 Hirondelle Systems |
<a href='../source/SourceAction-2.html'><b>Source Code</b></a><IMG class='no-margin' SRC="../images/goldstar.gif" ALT=""> |
<a href="mailto:webmaster@javapractices.com">Contact</a> |
<a href="http://creativecommons.org/licenses/by-nc-sa/1.0/">License</a> |
<a href='../apps/cjp.rss'>RSS</a>
<!-- ukey="2AC36CD2" -->
<!-- ckey="16DF3D87" -->
<br>

 Individual code snippets can be used under this <a href='../LICENSE.txt'>BSD license</a> - Last updated on June 6, 2010.<br>
 Over 150,000 unique IPs last month - <span title='Java Practices 2.6.5, Mon May 16 00:00:00 EDT 2011'>Built with</span> <a href='http://www.web4j.com/'>WEB4J</a>.<br>
 - In Memoriam : Bill Dirani -
</div>

<script src="../../www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2633428-1";
urchinTracker();
</script>



</body>

<!-- Mirrored from www.javapractices.com/topic/TopicAction.do;jsessionid=4FCCB481C702D708A7360133D128E359?Id=40 by HTTrack Website Copier/3.x [XR&CO'2010], Sun, 12 Jun 2011 17:27:50 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
</html>
